Named Parameters এবং SqlParameterSource এর ব্যবহার

Java Technologies - স্প্রিং জেডিবিসি (Spring JDBC) Spring JDBC এ NamedParameterJdbcTemplate ব্যবহার |
79
79

Spring JDBC-এ Named Parameters এবং SqlParameterSource ব্যবহার করা হয় SQL কোয়েরি বা আপডেট অপারেশনে প্যারামিটার পাঠানোর জন্য। এটি প্যারামিটারাইজড কোয়েরির ব্যবহারে অনেক সুবিধা প্রদান করে এবং কোডকে আরও পরিষ্কার, পাঠযোগ্য এবং নিরাপদ করে তোলে।

Named Parameters

Named Parameters হল SQL কোয়েরির মধ্যে প্যারামিটারকে নাম দিয়ে উল্লেখ করার পদ্ধতি। সাধারণত, JDBC এ প্যারামিটার বসানোর জন্য ? ব্যবহার করা হয়, কিন্তু Named Parameters ব্যবহার করলে প্যারামিটারগুলোকে নাম দিয়ে উল্লেখ করা যায়, যা কোডের পাঠযোগ্যতা বৃদ্ধি করে এবং SQL ইনজেকশনের ঝুঁকি কমায়।

Spring JDBC-এ NamedParameterJdbcTemplate ব্যবহার করা হয় Named Parameters এর সাথে কাজ করতে।

SqlParameterSource

SqlParameterSource একটি ইন্টারফেস যা প্যারামিটার মানগুলি সরবরাহ করে। NamedParameterJdbcTemplate ক্লাস এই ইন্টারফেসটি ব্যবহার করে নামকৃত প্যারামিটারগুলোর মানগুলিকে ম্যানেজ করে।

Spring JDBC-এ NamedParameterJdbcTemplate এবং SqlParameterSource ব্যবহার করার উদাহরণ নিচে দেখানো হলো।


উদাহরণ ১: Named Parameters এর ব্যবহার

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class UserRepository {

    @Autowired
    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    // Method to get users by age range using named parameters
    public List<User> getUsersByAgeRange(int minAge, int maxAge) {
        String sql = "SELECT * FROM users WHERE age BETWEEN :minAge AND :maxAge";

        MapSqlParameterSource parameters = new MapSqlParameterSource();
        parameters.addValue("minAge", minAge);
        parameters.addValue("maxAge", maxAge);

        return namedParameterJdbcTemplate.query(sql, parameters, new UserRowMapper());
    }
}

এখানে:

  • SQL কোয়েরিতে :minAge এবং :maxAge নামে প্যারামিটার ব্যবহার করা হয়েছে।
  • MapSqlParameterSource ব্যবহার করে প্যারামিটারগুলোর মান (যেমন minAge এবং maxAge) সেট করা হয়েছে।
  • NamedParameterJdbcTemplate ব্যবহার করে কোয়েরি চালানো হয়েছে, যা নামকৃত প্যারামিটারগুলি সমর্থন করে।

উদাহরণ ২: SqlParameterSource এর ব্যবহার

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.stereotype.Repository;

@Repository
public class UserRepository {

    @Autowired
    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    // Method to update user details using named parameters
    public int updateUser(int userId, String userName, String email) {
        String sql = "UPDATE users SET user_name = :userName, email = :email WHERE user_id = :userId";

        SqlParameterSource parameters = new MapSqlParameterSource()
                .addValue("userId", userId)
                .addValue("userName", userName)
                .addValue("email", email);

        return namedParameterJdbcTemplate.update(sql, parameters);
    }
}

এখানে:

  • SQL কোয়েরিতে :userId, :userName, এবং :email নামে প্যারামিটার ব্যবহার করা হয়েছে।
  • MapSqlParameterSource এর মাধ্যমে SQL প্যারামিটারগুলো সেট করা হয়েছে।
  • namedParameterJdbcTemplate.update() মেথডটি ব্যবহার করে SQL কোয়েরি আপডেট করা হয়েছে।

NamedParameterJdbcTemplate এবং SqlParameterSource এর কার্যকারিতা

  1. NamedParameterJdbcTemplate:
    • এটি Spring JDBC টেমপ্লেটের একটি বিশেষায়িত সংস্করণ যা নামকৃত প্যারামিটারগুলির সাথে কাজ করে।
    • এটি JdbcTemplate এর মতো কাজ করে, তবে এটি প্যারামিটারগুলির নাম ব্যবহার করে SQL কোয়েরি বা আপডেট অপারেশন পরিচালনা করতে সহায়তা করে।
  2. MapSqlParameterSource:
    • এটি SqlParameterSource ইন্টারফেসের একটি ইমপ্লিমেন্টেশন। এটি প্যারামিটার নাম এবং তাদের মান সংরক্ষণ করতে ব্যবহৃত হয়।
    • এটি addValue() মেথডের মাধ্যমে প্যারামিটার যোগ করতে সহায়তা করে, যেখানে প্যারামিটার নাম এবং মান নির্ধারণ করা হয়।
  3. SQL Injection থেকে নিরাপত্তা:
    • Named Parameters ব্যবহার করার অন্যতম সুবিধা হলো এটি SQL ইনজেকশনের আক্রমণ থেকে সুরক্ষা প্রদান করে, কারণ প্যারামিটারগুলি নামের মাধ্যমে নির্ধারণ করা হয় এবং এটি স্বয়ংক্রিয়ভাবে সঠিকভাবে escaped হয়ে যায়।

উপসংহার

  • Named Parameters ব্যবহার করলে SQL কোড আরো পরিষ্কার এবং পাঠযোগ্য হয়, এবং এটি SQL ইনজেকশন রোধে সহায়তা করে।
  • SqlParameterSource (যেমন MapSqlParameterSource) প্যারামিটারগুলোর মান রাখার জন্য একটি ইন্টারফেস প্রদান করে এবং NamedParameterJdbcTemplate এর সাথে খুব সহজে ইন্টিগ্রেট করা যায়।

এভাবে Spring JDBC-এ Named Parameters এবং SqlParameterSource ব্যবহার করা কোডকে আরো মেনটেনেবল এবং নিরাপদ করে তোলে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion